package thread;

public class Table {
    private int beans=20;

    /*
    在方法上使用synchronized关键字后，该方法成为“同步方法”。多个线程不能同时在方法内部执行
    将多个线程并发执行改为同步（有先后顺序）的执行可有效解决并发安全问题
     */
    public synchronized int getBen(){
        if (beans==0){
            throw new RuntimeException("没有豆子了！");
        }
        //主动放弃本次事件篇用来模拟线程执行到这里是CPU时间片用完了
        Thread.yield();//该方法可以让运行该方法的线程主动放弃本次剩余时间片
        return beans--;
    }
}
